/**
 * 统计数据仓储层
 * 负责项目统计数据的持久化和检索
 * 迁移至统一服务目录
 */
import cloudHelper from '../helpers/cloud_helper';
import SmartCache from '../helpers/smart_cache';

// 创建统计缓存实例
const statisticsCache = new SmartCache('statistics', 10 * 60 * 1000); // 10分钟缓存

class StatisticsRepository {
  /**
   * 获取项目统计数据
   * @param {String} projectId 项目ID
   * @param {Object} params 查询参数
   */
  async getProjectStatistics(projectId, params = {}) {
    if (!projectId) throw new Error('项目ID不能为空');
    
    const cacheKey = `project:${projectId}:${JSON.stringify(params)}`;
    
    try {
      // 尝试从缓存获取
      return await statisticsCache.get(cacheKey, async () => {
        // 从云函数获取数据
        const result = await cloudHelper.callCloudData('statistics/project', {
          projectId,
          ...params
        });
        
        // 返回结果
        return result || null;
      });
    } catch (err) {
      console.error('[StatisticsRepository] getProjectStatistics 错误:', err);
      throw err;
    }
  }
  
  /**
   * 获取项目资源使用统计
   * @param {String} projectId 项目ID
   * @param {Object} params 查询参数
   */
  async getProjectResources(projectId, params = {}) {
    if (!projectId) throw new Error('项目ID不能为空');
    
    const cacheKey = `resources:${projectId}:${JSON.stringify(params)}`;
    
    try {
      // 尝试从缓存获取
      return await statisticsCache.get(cacheKey, async () => {
        // 从云函数获取数据
        const result = await cloudHelper.callCloudData('statistics/resources', {
          projectId,
          ...params
        });
        
        return result || null;
      });
    } catch (err) {
      console.error('[StatisticsRepository] getProjectResources 错误:', err);
      throw err;
    }
  }
}

export default new StatisticsRepository(); 